import { z } from '@vben/common-ui';

import { validExistDataApi } from '#/api';

export interface ValidExistDataParams {
  // 表名
  tableName: string;
  // 字段名
  fieldName: string;
  // 字段值
  fieldVal: string;
  // 数据ID(编辑需要)
  rowId: string;
  // 自定义条件
  sqlSelect: string;
}

// 异步验证数据是否存在数据库
export const asyncValidDataApi = (
  zodSchema: z.ZodString,
  params: ValidExistDataParams,
) => {
  return zodSchema.refine(
    async (value) => {
      if (!value) return true;
      params.fieldVal = value;
      if (params.sqlSelect) {
        params.sqlSelect = params.sqlSelect.replaceAll('undefined', '0');
      }
      return !(await validExistDataApi(params));
    },
    {
      message: '值不可用,系统中已存在!',
    },
  );
};
